package cxydmmszl.chapter05.t082;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

/**
 * <li style="color: red;">Prob</li>
 * 在有序但是含有空的数组中查找字符串
 * <li style="color: green;">Desc</li>
 * 给定一个字符串数组 strs[]，在 strs 中有些位置为 null，但在不为 null 的位置上，其字符串是按照字典序由小到大出现的。
 * 在给定一个字符串 str，请返回 str 在 strs 中出现的最左位置，如果 strs 中不存在 str 请输出 “-1”。
 * <li style="color: green;">Input</li>
 * 输出包含多行，第一行包含一个整数 n 代表 strs 的长度，第二行一个字符串，代表 str，
 * 接下来 n 行，每行包含一个字符串构成，字符串只包含小写字符，
 * 如果这一行为 “0” ，代表该行字符串为空，这 n 行字符串代表 strs。
 * （数据保证当字符串不为空时，所有字符均为小写字母；保证所有的字符串长度都小于 10，1≤n≤10^5）
 * <li style="color: green;">Output</li>
 * 输出一个整数，代表要返回的值。
 * <li style="color: blue;">Link</li> CD99
 *
 * @author habitplus
 * @since 2021-09-08 16:34
 */
public class Main {
//    private static final StreamTokenizer ST =
//            new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//
//    private static int nextInt() {
//        try {
//            ST.nextToken();
//            return (int) ST.nval;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return 0;
//    }
//
//    private static String nextStr() {
//        try {
//            ST.nextToken();
//            return ST.sval;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return "";
//    }

    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(bf.readLine());
        String str = bf.readLine();
        String[] strs = new String[n];
        for (int i = 0; i < n; i++) {
            strs[i] = bf.readLine();
            if ("0".equals(strs[i])) {
                strs[i] = null;
            }
        }

        int ans = getFirstIndex(strs, str);

        System.out.println(ans);
    }

    private static int getFirstIndex(String[] strs, String str) {
        if (strs == null || strs.length == 0 || str == null) return -1;

        int l = 0, r = strs.length - 1, m;
        int res = -1;
        int k, cmp;
        while (l <= r) {
            m = (l + r) / 2;
            if (strs[m] != null && str.equals(strs[m])) {
                res = m;
                r = m - 1;
            } else if (strs[m] != null) {
                if (str.compareTo(strs[m]) > 0) l = m + 1;
                else r = m - 1;
            } else {
                k = m;
                // 向左寻找最近的 非 null 字符串
                while (strs[k] == null && --k >= l) ;

                if (k < l) {
                    l = m + 1;
                } else {
                    cmp = str.compareTo(strs[k]);
                    if (cmp > 0) {
                        l = m + 1;
                    } else {
                        r = k - 1;
                        res = cmp == 0 ? k : res;
                    }
                }
            }
        }

        return res;
    }
}
